package com.example.demo.user.service;

import com.example.demo.common.PageResult;
import com.example.demo.user.dto.UserCreateRequest;
import com.example.demo.user.dto.UserQueryRequest;
import com.example.demo.user.dto.UserResponse;
import com.example.demo.user.dto.UserUpdateRequest;
import com.example.demo.user.entity.User;

public interface UserService {

    UserResponse register(UserCreateRequest request);

    PageResult<UserResponse> listUsers(UserQueryRequest request);

    UserResponse getUser(Long id);

    UserResponse updateUser(Long id, UserUpdateRequest request);

    void deleteUser(Long id);

    UserResponse updateZipQuota(Long id, int quota, Integer used);

    void validateZipQuota(Long userId);

    void consumeZipQuota(Long userId);

    User findByUsername(String username);
}
